#ifndef SIMULATED_ANNEALING_HPP_
#   define SIMULATED_ANNEALING_HPP_

#   include "Solver.hpp"

class SimulatedAnnealing : public Solver
{
    public:
        SimulatedAnnealing(VRPTW& inVRPTW)
            : Solver(inVRPTW), saSol(inVRPTW), saNSol(inVRPTW), saRecord(inVRPTW)
        {}
        
        void    execute() EXC_THROWER();
        
    protected:
        Solution        saSol;
        Solution        saNSol;
        Solution        saRecord;
        
        SolutionEval    saSolE;
        SolutionEval    saNSolE;
        SolutionEval    saRecordE;
        
        double          saTemperature;
        double          saRand;
        
        void            build_neighbor();
        void            split();
};


#endif
